package com.zjzywl.smoke.controller;

import java.util.List;

import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.zjzywl.smoke.repository.AlarmTypeRepository;
import com.zjzywl.smoke.util.WebResult;
import com.zjzywl.smoke.entity.AlarmType;

@RestController
@RequestMapping(value = "/alarmType")
public class AlarmTypeController extends BaseController {

	@Autowired
	private AlarmTypeRepository alarmTypeRepository;

	// 报警类型列表
	@RequestMapping(value = "/list")
	public List<AlarmType> getAlarmType(Model model) {
		List<AlarmType> alarmTypes = alarmTypeRepository.findAll();
		return alarmTypes;
	}
	// 获取报警类型数据
	@RequestMapping(value = "/data/list")
	@ResponseBody
	public WebResult getAlarmTypes() {
		List<AlarmType> alarmTypes = alarmTypeRepository.findAll();
		if (alarmTypes != null) {
			return WebResult.OK(alarmTypes);
		} else {
			return WebResult.FAIL("找不到报警类型");
		}
	}

	// 删除
	@RequestMapping(value = "/del/{alarmTypeid}")
	@ResponseBody
	public WebResult delAlarmType(@PathVariable("alarmTypeid") Integer alarmTypeid) {
		try {
			alarmTypeRepository.delete(alarmTypeid);
			return WebResult.OK();
		} catch (Exception e) {
			// TODO: handle exception
			return WebResult.FAIL(e.getMessage());
		}
	}

	// 根据编号获取报警类型信息
	@RequestMapping(value = "/get/{alarmTypeid}")
	@ResponseBody
	public WebResult getAlarmType(@PathVariable("alarmTypeid") Integer alarmTypeid) {
		AlarmType alarmType = alarmTypeRepository.findOne(alarmTypeid);
		if (alarmType != null) {
			return WebResult.OK(alarmType);
		} else {
			return WebResult.FAIL("找不到警报类型信息");
		}
	}

	// 增加报警类型信息
	@RequestMapping(value = "/save")
	@ResponseBody
	public WebResult save(@Valid AlarmType alarmType, BindingResult bindingResult) {
		try {
			// 查找是否存在id,存在则修改，不存在则添加
			// 修改
			if (alarmTypeRepository.findByAlarmId(alarmType.getAlarmTypeId()) != null) {
				// alarmTypeRepository.updateAlarmType(alarmType.getAlarmName(),
				// alarmType.getAlarmLevel(), alarmType.getAlarmCode());

				alarmTypeRepository.save(alarmType);
				return WebResult.OK(alarmType);
			} else {
				// 添加
				AlarmType type = alarmTypeRepository.findByAlarmCode(alarmType.getAlarmCode());
				// 判断警报编码是否存在
				if (type == null) {
					alarmTypeRepository.save(alarmType);
					return WebResult.OK(alarmType);
				} else {
					return WebResult.FAIL("已存在警报类型编码");
				}
			}
			// System.out.println(alarmType);
			// if(alarmType != null){
			// System.out.println("save/update");
			// alarmTypeRepository.save(alarmType);
			// }
		} catch (Exception e) {
			// TODO: handle exception
			return WebResult.FAIL(e.getMessage());
		}
	}

	// 修改报警类型信息
	@RequestMapping(value = "/update")
	@ResponseBody
	public WebResult update(@Valid AlarmType alarmType, BindingResult bindingResult) {
		try {
			System.out.println("update");
			// alarmTypeRepository.updateAlarmType(alarmType.getAlarmName(),
			// alarmType.getAlarmLevel(), alarmType.getAlarmCode());
			alarmTypeRepository.save(alarmType);
			return WebResult.OK(alarmType);
		} catch (Exception e) {
			return WebResult.FAIL("修改失败");
		}
	}
}
